
from django.urls import path
from rest_framework_jwt.views import obtain_jwt_token
from meiduo_admin.views.login_view import *
from meiduo_admin.views.home_views import *
from meiduo_admin.views.users_views import *
from meiduo_admin.views.sku_views import *
from meiduo_admin.views.spu_views import *
from meiduo_admin.views.spec_views import *
from meiduo_admin.views.option_views import *
from meiduo_admin.views.image_views import *
from meiduo_admin.views.orders_views import *
from meiduo_admin.views.perm_views import *
from meiduo_admin.views.group_views import *
from meiduo_admin.views.admin_views import *


urlpatterns = [
    # ======登陆======
    # path('authorizations/', LoginView.as_view()),
    # 使用jwt拓展插件提供的obtain_jwt_token视图来完成用户名和密码校验以及签发token
    # 注意：我们需要自定义一个响应参数构造函数
    path('authorizations/', obtain_jwt_token),

    # ======主页数据统计======
    # 用户总数统计
    path('statistical/total_count/', UserTotalCountView.as_view()),
    # 日增用户统计
    path('statistical/day_increment/', UserDayCountView.as_view()),
    # 日活跃用户统计
    path('statistical/day_active/', UserActiveCountView.as_view()),
    # 日下单用户统计
    path('statistical/day_orders/', UserOrderCountView.as_view()),
    # 月增用户统计
    path('statistical/month_increment/', UserMonthCountView.as_view()),
    # 日分类商品访问量
    path('statistical/goods_day_views/', GoodsDayView.as_view()),

    # 查询用户列表数据，新建用户
    path('users/', UserView.as_view()),

    # SKU管理，查询列表和新建
    path('skus/', SKUGoodsView.as_view({
        'get': 'list',
        'post': 'create'
    })),
    # SKU单一对象详细信息
    path('skus/<int:pk>/', SKUGoodsView.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy'
    })),
    # 新建sku可选三级分类信息
    path('skus/categories/', SKUCateView.as_view()),
    # 新建sku可选spu信息
    path('goods/simple/', SPUSimpleView.as_view()),
    # 可选规格和选项
    path('goods/<int:pk>/specs/', SpecOptView.as_view()),

    # SPU关联
    path('goods/', SPUView.as_view({
        'get': 'list',
        'post': 'create'
    })),
    path('goods/<int:pk>/', SPUView.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy'
    })),
    # 新建SPU可选品牌信息
    path('goods/brands/simple/', BrandSimpleView.as_view()),
    # 新建SPU可选一级分类
    path('goods/channel/categories/', SPUCateListView.as_view()),
    # 可选的二级或三级分类
    path('goods/channel/categories/<int:pk>/', SPUCateListView.as_view()),

    # 规格表
    path('goods/specs/', SpecViewSet.as_view({
        'get': 'list',
        'post': 'create'
    })),
    path('goods/specs/<int:pk>/', SpecViewSet.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy'
    })),

    # 选项表
    path('specs/options/', OptionViewSet.as_view({
        'get': 'list',
        'post': 'create'
    })),
    path('specs/options/<int:pk>/', OptionViewSet.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy'
    })),
    # 新增选项可选规格
    path('goods/specs/simple/', SpecSimpleListView.as_view()),

    # 图片管理
    path('skus/images/', ImageViewSet.as_view({
        'get': 'list',
        'post': 'create'
    })),
    path('skus/images/<int:pk>/', ImageViewSet.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy'
    })),
    # 新建图片可选sku
    path('skus/simple/', SKUSimpleView.as_view()),
    
    # 订单管理列表数据
    path('orders/', OrderView.as_view({'get':'list'})),
    # 订单详情
    path('orders/<int:pk>/', OrderView.as_view({'get':'retrieve'})),
    # 修改订单状态
    path('orders/<int:pk>/status/', OrderView.as_view({'patch':'partial_update'})),

    # 权限管理
    path('permission/perms/', PermViewSet.as_view({
        'get': 'list',
        'post': 'create'
    })),
    path('permission/perms/<int:pk>/', PermViewSet.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy'
    })),
    # 可选类型
    path('permission/content_types/', PermTypeListView.as_view()),

    # 分组管理
    path('permission/groups/', GroupViewSet.as_view({
        'get': 'list',
        'post': 'create'
    })),
    path('permission/groups/<int:pk>/', GroupViewSet.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy'
    })),
    # 新建分组可选权限
    path('permission/simple/', GroupPermListView.as_view()),

    # 管理员用户
    path('permission/admins/', AdminUserViewSet.as_view({
        'get': 'list',
        'post': 'create'
    })),
    path('permission/admins/<int:pk>/', AdminUserViewSet.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy'
    })),
    # 新建管理员可选分组
    path('permission/groups/simple/', AdminUserGroupListView.as_view()),
]

